1. Field of the Invention
The present invention relates to error correcting systems and techniques. More specifically, the present invention relates to systems and techniques for correcting soft (data) errors.
While the present invention is described herein with reference to illustrative embodiments for particular applications, it should be understood that the invention is not limited thereto. Those having ordinary skill in the art and access to the teachings provided herein will recognize additional modifications, applications, and embodiments within the scope thereof and additional fields in which the present invention would be of significant utility.
2. Description of the Related Art
The memory chips used in digital data processing and communication systems are subject to hard and soft errors. A typical memory chip is an array of data-storage cells. The 64K chip, for example, consists of an array of 256 by 256 data-storage cells. Each cell stores one bit, a 0 or a 1. The 0's and 1's stored in a memory chip are represented by the presence or absence of a charge at cell sites in the array.
A hard error results from a defect in the memory by which a cell becomes fixed in one logical state or the other.
Soft errors occur when a bit of data is stored or read incorrectly from memory. Soft errors are data errors which may result from alpha particles and/or numerous other effects.
Conventional digital error correcting codes (ECC) can be designed to correct "n" errors and detect "n+1" errors. Thus, soft errors may make correctable errors merely detectable or may make detectable errors undetectable.
Hence, "soft-scrub" techniques have been developed to eliminate soft errors. Soft-scrubbing is a technique which may be used with symmetrical error correcting codes. Symmetrical error correcting codes have the property that if all the data and check bits are inverted the result is still a valid code ECC word. Soft scrubbing involves an inhibition of error correction and a reading of raw data and ECC check bits from memory. Next, all the bits are inverted in software and re-written into memory. Error correction is re-enabled and the data and check bits are read again from memory. Next, the bits are re-inverted in software and re-written to memory. The data is then re-read normally. If it is then correctable, there was a soft error and it has been "scrubbed". The corrected word can now be re-written to memory. In this case, the existence of a hard error has allowed a soft error to be corrected.
In any event, the conventional "soft-scrub" technique is effective only for symmetrical or even weight row error correcting codes. Unfortunately, in the development of an error correcting system, the designer typically builds a code to meet system requirements without control over the symmetry of the code. Thus, if the code turns out to be odd or unsymmetrical it is generally difficult if not impossible to change the code from odd to even and still meet the requirements of the system.
Hence, a need remains in the art for a technique for correcting soft errors in odd weight row error correcting codes.